package com.kang.controller;

import com.kang.entity.Park;
import com.kang.service.ParkService;
import com.kang.util.WebResponse;
import com.kang.vo.ParamInfo;
import com.kang.vo.ParkVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@Api(tags = "社区用户端接口")
@RequestMapping("/user/park")
@Slf4j
public class ParkController {

    @Autowired
    private ParkService parkService;

    @ApiOperation("创建社区")
        @PostMapping("insertPark")
    public WebResponse insertPark(@RequestBody Park park) {
        try {
            return WebResponse.resSuccess("添加社区成功",parkService.insertPark(park));
        } catch (Exception ex) {
            log.error("添加社区失败",ex);
            return WebResponse.resFail("添加社区失败",null);
        }
    }

    @ApiOperation("删除社区")
    @PostMapping("deletePark")
    public WebResponse deletePark(@RequestBody Park park) {
        try {
            return WebResponse.resSuccess("删除社区成功",parkService.deletePark(park.getId()));
        } catch (Exception ex) {
            log.error("删除社区失败",ex);
            return WebResponse.resFail("删除社区失败",null);
        }
    }

    @ApiOperation("修改社区")
    @PostMapping("updatePark")
    public WebResponse updatePark(@RequestBody Park park) {
        try {
            return WebResponse.resSuccess("修改社区成功",parkService.updatePark(park));
        } catch (Exception ex) {
            log.error("修改社区失败",ex);
            return WebResponse.resFail("修改社区失败",null);
        }
    }

    @ApiOperation("查询社区详情")
    @GetMapping("getParkById")
    public WebResponse getParkById(Integer id) {
        try {
            return WebResponse.resSuccess("查询社区详情成功",parkService.getParkById(id));
        } catch (Exception ex) {
            log.error("查询社区详情失败",ex);
            return WebResponse.resFail("查询社区详情失败",null);
        }
    }

    @ApiOperation("分页查询社区")
    @GetMapping("getParkPage")
    public WebResponse getParkPage(ParamInfo paramInfo) {
        try {
            return WebResponse.resSuccess("分页查询社区成功",parkService.getParkPage(paramInfo));
        } catch (Exception ex) {
            log.error("分页查询社区失败",ex);
            return WebResponse.resFail("分页查询社区失败",null);
        }
    }

    @ApiOperation("获取当前用户的社区列表")
    @GetMapping("getParkList")
    public WebResponse getParkList() {
        try {
            return WebResponse.resSuccess("获取当前用户的社区列表成功",parkService.getParkList());
        } catch (Exception ex) {
            log.error("获取当前用户的社区列表失败",ex);
            return WebResponse.resFail("获取当前用户的社区列表失败",null);
        }
    }


    /**
     * 当personPark传1时查自己创建的园区  2时为进入的社区  默认为和自己有关联的所有社区
     */
    @ApiOperation("获取当前用户的社区列表集合")
    @GetMapping("getParkListByPerson")
    public WebResponse getParkListByPerson(ParamInfo paramInfo) {
        try {
            return WebResponse.resSuccess("获取当前用户的社区列表成功",parkService.getParkListByPerson(paramInfo));
        } catch (Exception ex) {
            log.error("获取当前用户的社区列表失败",ex);
            return WebResponse.resFail("获取当前用户的社区列表失败",null);
        }
    }

    @ApiOperation("查询用户待审核的社区")
    @GetMapping("getParkAudit")
    public WebResponse getParkAudit(ParkVo parkVo) {
        try {
            return WebResponse.resSuccess("查询用户待审核的社区成功",parkService.getParkAudit(parkVo));
        } catch (Exception ex) {
            log.error("查询用户待审核的社区失败",ex);
            return WebResponse.resFail("查询用户待审核的社区失败",null);
        }
    }

    @ApiOperation("加入社区")
    @PostMapping("appJoinPark")
    public WebResponse appJoinPark(ParkVo vo) {
        try {
            return WebResponse.resSuccess("申请加入社区成功",parkService.appJoinPark(vo));
        } catch (Exception ex) {
            log.error("申请加入社区失败",ex);
            return WebResponse.resFail("申请加入社区失败",null);
        }
    }

    @ApiOperation("退出社区")
    @PostMapping("outPark")
    public WebResponse outPark(@RequestBody ParkVo vo) {
        try {
            return WebResponse.resSuccess("退出社区成功",parkService.outPark(vo));
        } catch (Exception ex) {
            log.error("退出社区失败",ex);
            return WebResponse.resFail("退出社区失败",null);
        }
    }

    @ApiOperation("查看当前社区下的用户")
    @GetMapping("getUserByPark")
    public WebResponse getUserByPark(ParkVo vo) {
        try {
            return WebResponse.resSuccess("查看当前社区下的用户成功",parkService.getUserByPark(vo));
        } catch (Exception ex) {
            log.error("查看当前社区下的用户失败",ex);
            return WebResponse.resFail("查看当前社区下的用户失败",null);
        }
    }

    @ApiOperation("踢出社区")
    @PostMapping("kickOutPark")
    public WebResponse kickOutPark(@RequestBody ParkVo vo) {
        try {
            return WebResponse.resSuccess("踢出社区成功",parkService.kickOutPark(vo));
        } catch (Exception ex) {
            log.error("踢出社区失败",ex);
            return WebResponse.resFail("踢出社区失败",null);
        }
    }

    @ApiOperation("首页获取社区下最新的文章")
    @GetMapping("getParkEssay")
    public WebResponse getParkEssay(ParkVo vo) {
        try {
            return WebResponse.resSuccess("获取社区下最新的数据成功",parkService.getParkEssay(vo));
        } catch (Exception ex) {
            log.error("获取社区下最新的数据失败",ex);
            return WebResponse.resFail("获取社区下最新的数据失败",null);
        }
    }

    /**
     * 传社区id
     */
    @ApiOperation("用户申请加入社区")
    @PostMapping("appPark")
    public WebResponse appPark(@RequestBody ParkVo vo) {
        try {
            return WebResponse.resSuccess("用户申请加入社区成功",parkService.appPark(vo.getParkId()));
        } catch (Exception ex) {
            log.error("用户申请加入社区失败",ex);
            return WebResponse.resFail("用户申请加入社区失败",null);
        }
    }


    @ApiOperation("获取当前用户需要审核的用户数据")
    @GetMapping("disposeAppList")
    public WebResponse disposeAppList(Integer parkId) {
        try {
            return WebResponse.resSuccess("获取当前用户需要审核的用户数据成功",parkService.disposeAppList(parkId));
        } catch (Exception ex) {
            log.error("获取当前用户需要审核的用户数据失败",ex);
            return WebResponse.resFail("获取当前用户需要审核的用户数据失败",null);
        }
    }

    /**
     * 传社区id  以及需要审核的用户id
     */
    @ApiOperation("用户处理申请")
    @PostMapping("disposeApp")
    public WebResponse disposeApp(@RequestBody ParkVo vo) {
        try {
            return WebResponse.resSuccess("用户处理申请成功",parkService.disposeApp(vo));
        } catch (Exception ex) {
            log.error("用户处理申请失败",ex);
            return WebResponse.resFail("用户处理申请失败",null);
        }
    }


    @ApiOperation("查询社区的成员")
    @GetMapping("getParkUser")
    public WebResponse getParkUser(Integer parkId) {
        try {
            return WebResponse.resSuccess("查询社区的成员成功",parkService.getParkUser(parkId));
        } catch (Exception ex) {
            log.error("查询社区的成员失败",ex);
            return WebResponse.resFail("查询社区的成员失败",null);
        }
    }









}
